Remote access services allow a local computer to access the resources of a remote computer through input/output (I/O) devices of the local computer via a computer network. For instance, a remote access server process executing on the remote computer may establish an operating system instance having a “desktop” display and one or more executing applications with access to storage devices interconnected with the remote computer. This operating system instance may then be transported to the local computer (executing a remote access client), such that a local operator may interface with the instance through a local display (e.g., monitor) and local input devices (e.g., mouse and keyboard). For example, the operating system instance may be the only instance on the remote computer (e.g., a current desktop display on the remote device), or may be an instance maintained for the purpose of serving one or more local client computers (e.g., per-user based remote desktop connections).
Typically, remote access services allow for devices to be shared at a high-level, e.g., based on a mapping of devices as recognized by the operating system. For instance, an operating system may determine that a device connected to a parallel port (or Line Print Terminal, “LPT” port) is a “printer” as recognized by the corresponding operating system, and thus the printer may be shared among the local and remote devices at a high-level (e.g., an operating system level). In other words, a low-level communication (i.e., a communication protocol defining, e.g., message types and their formats/contents) between the printer and the port is translated by the operating system to a high-level communication, which may then be shared with remote computers. If the operating system is unable to translate the low-level communication, then the high-level communication cannot be shared. Also, if the operating system is specifically configured to operate based on the low-level communication (e.g., automatically connecting or syncing the device), only the locally attached computer's operating system may be privy to such low-level communication. In addition, some remote access services allow clients to manually “mount” remote devices, such as storage devices (e.g., disks) or printers, but again, this mounting is performed at a high-level, e.g., through a remote server operating system granting access to the mounted devices.